#include "conexiones.h"

namespace red {

Conexiones::Conexiones() {
}

Conexiones::~Conexiones() {

}

bool Conexiones::bTodasCorrectas() {

	vec_conexion_t::iterator t_it;
	bool t_b = true;
	conexion_t t_Conexion;

	for (t_it = this->m_vecConexiones.begin(); (t_b && (t_it != this->m_vecConexiones.end())); t_it++) {
		t_Conexion = *t_it;
		t_b = t_Conexion.pSocket->getUtilizable();
	}

	return t_b;
}

void Conexiones::agregar(conexion_t p_Conexion) {

	this->m_Mutex.lock();
	this->m_vecConexiones.push_back(p_Conexion);
	this->m_Mutex.unlock();
}

conexion_t Conexiones::get(int p_iNro) {

	conexion_t t_Conexion;

	this->m_Mutex.lock();
	t_Conexion = this->m_vecConexiones.at(p_iNro);
	this->m_Mutex.unlock();

	return t_Conexion;
}

void Conexiones::terminarConexion(int p_iNro) {

	conexion_t t_Conexion;

	this->m_Mutex.lock();
	t_Conexion = this->m_vecConexiones.at(p_iNro);
	t_Conexion.pHiloDeEntrada->cancel();
	delete t_Conexion.pHiloDeEntrada;
	delete t_Conexion.pSocket;
	this->m_vecConexiones.erase(m_vecConexiones.begin()+p_iNro);
	this->m_Mutex.unlock();
}

int Conexiones::size() {

	int t_iCant;

	this->m_Mutex.lock();
	t_iCant = this->m_vecConexiones.size();
	this->m_Mutex.unlock();

	return t_iCant;
}

}
